//=============================================================================
// 神魔异事录
//=============================================================================
// 
/*
 * 【神魔录解锁规则】
 * 
 * 常规敌人：
 * 初遇敌人，即记入《神魔录》。
 * 每击杀一次敌人：
 * 领队等级 > (敌人等级+3) 时，积累辨识度100%。
 * 其它情况时，随机积累30%~40%辨识度。

 * 非战斗所得护驾：
 * 如：初始装备（鼠）、获得物品（宝箱所得、收伏护驾）。
 * 获取时即积累100%辨识度。

 * 仅作路人的敌人：
 * 遇敌时即积累100%辨识度。

 * 一次解锁敌人：
 * 如：BOSS、只遇一次的敌人
 * 设置敌人标记<EnemyBook Complete>的敌人。
 * 击杀时积累100%辨识度。
 * 
 * 

 * 插件指令：
 * EnemyBook add x
 *   在神魔异世录中，添加x号敌人
 * EnemyBook remove x (已删除)
 *   在神魔异世录中，删除x号敌人
 * EnemyBook complete
 *   解锁神魔异世录中全部敌人
 * EnemyBook clear
 *   隐藏神魔异世录中全部敌人							（仅在测试时使用）
 * EnemyBook completeIdentify x
 *   解锁神魔异世录中敌人x，并解锁100%辨识度			（游戏中变身地热您使用）
 * EnemyBook completeIdentify all
 *   解锁神魔异世录中全部敌人，并全部解锁100%辨识度		（仅在测试时使用）
 * EnemyBook clearIdentify
 *   清零神魔异世录中全部敌人的辨识度					（仅在测试时使用）
 * 
 * 
 * 获得护驾时解锁神魔录，辨识度100%。
 * 
 * 敌人备注：
 * <EnemyBook Duplicate: x> 
 *   神魔录重复敌人，记录到x号敌人的神魔录中
 * 
 * <EnemyBook Complete>
 *   击杀一次即解锁的敌人。
 * 
 * <EnemyBook Hide>
 *   不计入神魔录的敌人
 * 存储神魔录的时机：(.saveGlobalEnemyBook();  //存储神魔录)
 * 1.存档时
 * 2.战斗结束
 * 3.执行插件指令EnemyBook clearIdentify时（非战斗）
 * 4.获取护驾时(非战斗)
 * 
*/
var Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
	Game_Interpreter_pluginCommand.call(this, command, args);
	if (command === 'EnemyBook') {
		switch(args[0]) {
		case 'add':
			$gameSystem.addToEnemyBook(Number(args[1]));
			break;
		//case 'remove':
		//	$gameSystem.removeFromEnemyBook(Number(args[1]));
		//	break;
		case 'complete':
			$gameSystem.completeEnemyBook();
			break;
		case 'clear':
			$gameSystem.clearEnemyBook();
			break;
		case 'completeIdentify':
			if (args[1] === 'all') {
				$gameSystem.completeAllEnemyIdentify();

			}else{
				$gameSystem.completeEnemyIdentify(Number(args[1]));
				if(!$gameParty.inBattle())
					DataManager.saveGlobalEnemyBook();  //存储神魔录
			}
			break;
		case 'clearIdentify':
			$gameSystem.clearIdentify();
			break;
		}
	}
};
// 清除神魔录（初始化）
Game_System.prototype.clearEnemyBook = function() {
	this._enemyBookFlags = [];
};

// 添加enemyId号敌人到神魔录
Game_System.prototype.addToEnemyBook = function(enemyId) {
	if (!this._enemyBookFlags) {
		this.clearEnemyBook();
	}
	this._enemyBookFlags[enemyId] = true;
};

// 从神魔录移除enemyId号敌人
/*
Game_System.prototype.removeFromEnemyBook = function(enemyId) {
	if (this._enemyBookFlags) {
		this._enemyBookFlags[enemyId] = false;
	}
};
*/
// 解锁全部神魔录
Game_System.prototype.completeEnemyBook = function() {
	this.clearEnemyBook();
	for (var i = 1; i < $dataEnemies.length; i++) {
		this._enemyBookFlags[i] = true;
	}
};


//是否在神魔录内
Game_System.prototype.isInEnemyBook = function(enemy) {
	if (this._enemyBookFlags && enemy) {
		return !!this._enemyBookFlags[enemy.id];
	} else {
		return false;
	}
};

// 清除击败数
Game_System.prototype.clearDefeatNumber = function() {
	this._defeatNumbers = [];
};

// 增加击败数
Game_System.prototype.incrementDefeatNumber = function(id) {
	if (!this._defeatNumbers) {
		this.clearDefeatNumber();
	}
	if (!this._defeatNumbers[id]) {
		this._defeatNumbers[id] = 0;
	}
	this._defeatNumbers[id]++;
};

// 获取击败数
Game_System.prototype.defeatNumber = function(id) {
	if (!this._defeatNumbers) {
		this.clearDefeatNumber();
	}
	if (!this._defeatNumbers[id]) {
		this._defeatNumbers[id] = 0;
	}
	return this._defeatNumbers[id];
};


// SWDA：清除辨识度
Game_System.prototype.clearIdentify = function() {
	this._identify = [];
};
// SWDA：增加辨识度
Game_System.prototype.incrementIdentify = function(id) {
	if (!this._identify) {
		this.clearIdentify();
	}
	if (!this._identify[id]) {
		this._identify[id] = 0;
	}
	let enemy = $dataEnemies[id];
	if(enemy.bookComplete){
		this._identify[id] = 100;

		return ;
	}
    //辨识度增加规则：小于100时累积。如果我方每次累积随机30~40。
    if (this._identify[id] < 100){
        if ($gameParty.leader().level <= enemy.catchLevel + 3){
            this._identify[id] += 30 + Math.randomInt(10);
        }else{
            this._identify[id] = 100;
        }
    }

    if (this._identify[id] > 100){
        this._identify[id] = 100;
    }
};

// SWDA：100%辨识度（获取护甲时执行。即获得物品、获得）
Game_System.prototype.completeEnemyIdentify = function(id) {
	this.addToEnemyBook(id);
	if (!this._identify) {
		this.clearIdentify();
	}
	if (!this._identify[id]) {
		this._identify[id] = 0;
	}
    this._identify[id] = 100;
};

// 解锁全部敌人辨识度
Game_System.prototype.completeAllEnemyIdentify = function() {
	$gameSystem.completeEnemyBook();
	this.clearIdentify();
	for (var i = 1; i < $dataEnemies.length; i++) {
		this._identify[i] = 100;
	}
};

// SWDA：获取辨识度
Game_System.prototype.identifyRate = function(id) {
	if (!this._identify) {
		this.clearIdentify();
	}
	if (!this._identify[id]) {
		this._identify[id] = 0;
	}
	return this._identify[id];
};


/*
// 登记在册的敌人数目
Game_System.prototype.getRegisterNumber = function() {
	var a=0;
	for (var i=1; i<$dataEnemies.length; i++) {
		var enemy = $dataEnemies[i];
		if (enemy.name && enemy.meta.book !== 'no') {
			if (this.isInEnemyBook(enemy)) a++;
		}
	}
	return a;
};

// 登记在册的敌人比率（解锁度）
Game_System.prototype.getRegisterPercent = function() {
	var a=0;
	var b=0;
	for (var i=1; i<$dataEnemies.length; i++) {
		var enemy = $dataEnemies[i];
		if (enemy.name && enemy.meta.book !== 'no') {
			if (this.isInEnemyBook(enemy)) a++;
			b++;
		}
	}
	return Math.floor(a*100/b);
};

*/
